package com.bt7274.mapper;

import com.bt7274.pojo.UserExp;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

/**
 * <p>
 * 用户积分表：记录用户已有积分等经常变动的数据 Mapper 接口
 * </p>
 *
 * @author hp
 * @since 2025-03-25
 */
public interface UserExpMapper extends BaseMapper<UserExp> {
    /**
     * 初始化用户体验数据
     *
     * @param userId 用户ID
     * @return 影响行数
     */
    int initUserExp(@Param("userId") String userId);

    /**
     * 更新用户上传下载量
     *
     * @param userId 用户ID
     * @param uploadedDelta 上传量增量
     * @param downloadedDelta 下载量增量
     * @return 影响行数
     */
    int updateUploadDownload(@Param("userId") String userId,
                             @Param("uploadedDelta") Long uploadedDelta,
                             @Param("downloadedDelta") Long downloadedDelta);

    /**
     * 更新用户经验值
     *
     * @param userId 用户ID
     * @param experienceDelta 经验值增量
     * @return 影响行数
     */
    int updateExperience(@Param("userId") String userId, @Param("experienceDelta") Integer experienceDelta);

    /**
     * 更新用户BT币
     *
     * @param userId 用户ID
     * @param btDelta BT币增量
     * @return 影响行数
     */
    int updateBt(@Param("userId") String userId, @Param("btDelta") Integer btDelta);

    /**
     * 重新计算并更新分享率
     *
     * @param userId 用户ID
     * @return 影响行数
     */
    int recalculateRatio(@Param("userId") String userId);
}